package strategy1;

import java.util.EnumMap;
import java.util.Map;

// 5. 工厂类
public class TaskGeneratorFactory {
    private static final Map<TaskType, AbstractTaskGenerator> GENERATOR_MAP = new EnumMap<>(TaskType.class);

    // 初始化时注册所有策略实现
    static {
        GENERATOR_MAP.put(TaskType.FIRST_VISIT, new FirstVisitTaskGenerator());
        GENERATOR_MAP.put(TaskType.REGULAR_VISIT, new RegularVisitTaskGenerator());
    }

    // 根据任务类型获取对应的生成器
    public static AbstractTaskGenerator getGenerator(TaskType taskType) {
        return GENERATOR_MAP.get(taskType);
    }

    // 统一的任务生成接口
    public static boolean generateTask(TaskType taskType, TaskContext context) {
        AbstractTaskGenerator generator = getGenerator(taskType);
        if (generator == null) {
            System.out.println("不支持的任务类型: " + taskType);
            return false;
        }
        return generator.generateTask(context);
    }
}
